Skip to content

⬆️(project) upgrade python dependencies#620

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/python-dependencies
Open

⬆️(project) upgrade python dependencies#620
renovate[bot] wants to merge 1 commit intomainfrom
renovate/python-dependencies

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Sep 23, 2024

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
anyio (changelog) ==4.9.0==4.12.1 age confidence
bcrypt ==4.2.0==5.0.0 age confidence
black (changelog) ==24.8.0==26.3.0 age confidence
cachetools ==5.5.0==7.0.3 age confidence
click (changelog) >=8.1.0,<8.2.1>=8.3.1,<8.4.0 age confidence
clickhouse-connect <0.8<0.14 age confidence
cryptography (changelog) ==43.0.1==46.0.5 age confidence
elasticsearch >=8.0.0,<9.0.0>=9.3.0,<9.4.0 age confidence
factory-boy ==3.3.1==3.3.3 age confidence
fastapi (changelog) ==0.114.2==0.135.1 age confidence
importlib-metadata >=8.5, <8.6>=8.7, <8.8 age confidence
mkdocs-click (changelog) ==0.8.1==0.9.0 age confidence
mkdocs-material (changelog) ==9.5.34==9.7.4 age confidence
mkdocstrings (changelog) ==0.26.1==1.0.3 age confidence
moto (changelog) ==5.0.14==5.1.21 age confidence
mypy (changelog) ==1.11.2==1.19.1 age confidence
neoteroi-mkdocs ==1.1.0==1.2.0 age confidence
polyfactory (changelog) ==2.16.2==3.3.0 age confidence
pyfakefs (changelog) ==5.6.0==6.1.4 age confidence
pymdown-extensions ==10.9==10.21 age confidence
pytest (changelog) ==8.3.5==9.0.2 age confidence
pytest-cov (changelog) ==5.0.0==7.0.0 age confidence
pytest-httpx (changelog) ==0.35.0==0.36.0 age confidence
python-jose (changelog) ==3.3.0==3.5.0 age confidence
responses (changelog) ==0.25.3==0.26.0 age confidence
ruff (source, changelog) ==0.6.5==0.15.5 age confidence
sentry-sdk (changelog) ==2.14.0==2.54.0 age confidence
twine ==5.1.1==6.2.0 age confidence
types-cachetools (changelog) ==5.5.0.20240820==6.2.0.20251022 age confidence
types-python-dateutil (changelog) ==2.9.0.20240906==2.9.0.20260305 age confidence
types-python-jose (changelog) ==3.3.4.20240106==3.5.0.20250531 age confidence
types-requests (changelog) <2.32.0.20240915<2.32.4.20260108 age confidence
uvicorn (changelog) ==0.30.6==0.41.0 age confidence
websockets (changelog) >=13.0,<14.0>=16,<16.1 age confidence

Release Notes

agronholm/anyio (anyio)

v4.12.1

Compare Source

  • Changed all functions currently raising the private NoCurrentAsyncBackend exception (since v4.12.0) to instead raise the public NoEventLoopError exception (#​1048)
  • Fixed anyio.functools.lru_cache not working with instance methods (#​1042)

v4.12.0

Compare Source

  • Added support for asyncio's task call graphs on Python 3.14 and later when using AnyIO's task groups (#​1025)
  • Added an asynchronous implementation of the functools module (#​1001)
  • Added support for uvloop=True on Windows via the winloop implementation (#​960; PR by @​Vizonex)
  • Added support for use as a context manager to anyio.lowlevel.RunVar (#​1003)
  • Added __all__ declarations to public submodules (anyio.lowlevel etc.) (#​1009)
  • Added the ability to set the token count of a CapacityLimiter to zero (#​1019; requires Python 3.10 or later when using Trio)
  • Added parameters case_sensitive and recurse_symlinks along with support for path-like objects to anyio.Path.glob() and anyio.Path.rglob() (#​1033; PR by @​northisup)
  • Dropped sniffio as a direct dependency and added the get_available_backends() function (#​1021)
  • Fixed Process.stdin.send() not raising ClosedResourceError and BrokenResourceError on asyncio. Previously, a non-AnyIO exception was raised in such cases (#​671; PR by @​gschaffner)
  • Fixed Process.stdin.send() not checkpointing before writing data on asyncio (#​1002; PR by @​gschaffner)
  • Fixed a race condition where cancelling a Future from BlockingPortal.start_task_soon() would sometimes not cancel the async function (#​1011; PR by @​gschaffner)
  • Fixed the presence of the pytest plugin causing breakage with older versions of pytest (<= 6.1.2) (#​1028; PR by @​saper)
  • Fixed a rarely occurring RuntimeError: Set changed size during iteration while shutting down the process pool when using the asyncio backend (#​985)

v4.11.0

Compare Source

  • Added support for cancellation reasons (the reason parameter to CancelScope.cancel()) (#​975)
  • Bumped the minimum version of Trio to v0.31.0
  • Added the ability to enter the event loop from foreign (non-worker) threads by passing the return value of anyio.lowlevel.current_token() to anyio.from_thread.run() and anyio.from_thread.run_sync() as the token keyword argument (#​256)
  • Added pytest option (anyio_mode = "auto") to make the pytest plugin automatically handle all async tests (#​971)
  • Added the anyio.Condition.wait_for() method for feature parity with asyncio (#​974)
  • Changed the default type argument of anyio.abc.TaskStatus from Any to None (#​964)
  • Fixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when local_port=0 (#​857; PR by @​11kkw and @​agronholm)
  • Fixed inconsistency between Trio and asyncio where a TCP stream that previously raised a BrokenResourceError on send() would still raise BrokenResourceError after the stream was closed on asyncio, but ClosedResourceError on Trio. They now both raise a ClosedResourceError in this scenario. (#​671)

v4.10.0

Compare Source

  • Added the feed_data() method to the BufferedByteReceiveStream class, allowing users to inject data directly into the buffer
  • Added various class methods to wrap existing sockets as listeners or socket streams:
    • SocketListener.from_socket()
    • SocketStream.from_socket()
    • UNIXSocketStream.from_socket()
    • UDPSocket.from_socket()
    • ConnectedUDPSocket.from_socket()
    • UNIXDatagramSocket.from_socket()
    • ConnectedUNIXDatagramSocket.from_socket()
  • Added a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects
  • Added context manager mix-in classes (anyio.ContextManagerMixin and anyio.AsyncContextManagerMixin) to help write classes that embed other context managers, particularly cancel scopes or task groups (#​905; PR by @​agronholm and @​tapetersen)
  • Added the ability to specify the thread name in start_blocking_portal() (#​818; PR by @​davidbrochart)
  • Added anyio.notify_closing to allow waking anyio.wait_readable and anyio.wait_writable before closing a socket. Among other things, this prevents an OSError on the ProactorEventLoop. (#​896; PR by @​graingert)
  • Incorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)
  • Added a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's
  • Updated the to_interpreters module to use the public concurrent.interpreters API on Python 3.14 or later
  • Fixed anyio.Path.copy() and anyio.Path.copy_into() failing on Python 3.14.0a7
  • Fixed return annotation of __aexit__ on async context managers. CMs which can suppress exceptions should return bool, or None otherwise. (#​913; PR by @​Enegg)
  • Fixed rollover boundary check in SpooledTemporaryFile so that rollover only occurs when the buffer size exceeds max_size (#​915; PR by @​11kkw)
  • Migrated testing and documentation dependencies from extras to dependency groups
  • Fixed compatibility of anyio.to_interpreter with Python 3.14.0b2 (#​926; PR by @​hroncok)
  • Fixed SyntaxWarning on Python 3.14 about return in finally (#​816)
  • Fixed RunVar name conflicts. RunVar instances with the same name should not share storage (#​880; PR by @​vimfu)
  • Renamed the BrokenWorkerIntepreter exception to BrokenWorkerInterpreter. The old name is available as a deprecated alias. (#​938; PR by @​ayussh-verma)
  • Fixed an edge case in CapacityLimiter on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (#​947)
psf/black (black)

v26.3.0

Compare Source

Stable style
  • Don't double-decode input, causing non-UTF-8 files to be corrupted (#​4964)
  • Fix crash on standalone comment in lambda default arguments (#​4993)
  • Preserve parentheses when # type: ignore comments would be merged with other
    comments on the same line, preventing AST equivalence failures (#​4888)
Preview style
  • Fix bug where if guards in case blocks were incorrectly split when the pattern had
    a trailing comma (#​4884)
  • Fix string_processing crashing on unassigned long string literals with trailing
    commas (one-item tuples) (#​4929)
  • Simplify implementation of the power operator "hugging" logic (#​4918)
Packaging
  • Fix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in
    frozen environments (#​4930)
Performance
  • Introduce winloop for windows as an alternative to uvloop (#​4996)
  • Remove deprecated function uvloop.install() in favor of uvloop.new_event_loop()
    (#​4996)
  • Rename maybe_install_uvloop function to maybe_use_uvloop to simplify loop
    installation and creation of either a uvloop/winloop evenloop or default eventloop
    (#​4996)
Output
  • Emit a clear warning when the target Python version is newer than the running Python
    version, since AST safety checks cannot parse newer syntax. Also replace the
    misleading "INTERNAL ERROR" message with an actionable error explaining the version
    mismatch (#​4983)
Blackd
  • Introduce winloop to be used when windows in use which enables blackd to run faster on
    windows when winloop is installed. (#​4996)
Integrations
  • Remove unused gallery script (#​5030)
  • Harden parsing of black requirements in the GitHub Action when use_pyproject is
    enabled so that only version specifiers are accepted and direct references such as
    black @&#8203; https://... are rejected. Users should upgrade to the latest version of the
    action as soon as possible. This update is received automatically when using
    psf/black@stable, and is independent of the version of Black installed by the
    action. (#​5031)
Documentation
  • Expand preview style documentation with detailed examples for wrap_comprehension_in,
    simplify_power_operator_hugging, and wrap_long_dict_values_in_parens features
    (#​4987)
  • Add detailed documentation for formatting Jupyter Notebooks (#​5009)

v26.1.0

Compare Source

Highlights

Introduces the 2026 stable style (#​4892), stabilizing the following changes:

  • always_one_newline_after_import: Always force one blank line after import
    statements, except when the line after the import is a comment or an import statement
    (#​4489)
  • fix_fmt_skip_in_one_liners: Fix # fmt: skip behavior on one-liner declarations,
    such as def foo(): return "mock" # fmt: skip, where previously the declaration would
    have been incorrectly collapsed (#​4800)
  • fix_module_docstring_detection: Fix module docstrings being treated as normal
    strings if preceded by comments (#​4764)
  • fix_type_expansion_split: Fix type expansions split in generic functions (#​4777)
  • multiline_string_handling: Make expressions involving multiline strings more compact
    (#​1879)
  • normalize_cr_newlines: Add \r style newlines to the potential newlines to
    normalize file newlines both from and to (#​4710)
  • remove_parens_around_except_types: Remove parentheses around multiple exception
    types in except and except* without as (#​4720)
  • remove_parens_from_assignment_lhs: Remove unnecessary parentheses from the left-hand
    side of assignments while preserving magic trailing commas and intentional multiline
    formatting (#​4865)
  • standardize_type_comments: Format type comments which have zero or more spaces
    between # and type: or between type: and value to # type: (value) (#​4645)

The following change was not in any previous stable release:

  • Regenerated the _width_table.py and added tests for the Khmer language (#​4253)

This release alo bumps pathspec to v1 and fixes inconsistencies with Git's
.gitignore logic (#​4958). Now, files will be ignored if a pattern matches them, even
if the parent directory is directly unignored. For example, Black would previously
format exclude/not_this/foo.py with this .gitignore:

exclude/
!exclude/not_this/

Now, exclude/not_this/foo.py will remain ignored. To ensure exclude/not_this/ and
all of it's children are included in formatting (and in Git), use this .gitignore:

*/exclude/*
!*/exclude/not_this/

This new behavior matches Git. The leading */ are only necessary if you wish to ignore
matching subdirectories (like the previous behavior did), and not just matching root
directories.

Output
  • Explicitly shutdown the multiprocessing manager when run in diff mode too (#​4952)
Integrations
  • Upgraded PyPI upload workflow to use Trusted Publishing (#​4611)

v25.12.0

Compare Source

Highlights
  • Black no longer supports running with Python 3.9 (#​4842)
Stable style
  • Fix bug where comments preceding # fmt: off/# fmt: on blocks were incorrectly
    removed, particularly affecting Jupytext's # %% [markdown] comments (#​4845)
  • Fix crash when multiple # fmt: skip comments are used in a multi-part if-clause, on
    string literals, or on dictionary entries with long lines (#​4872)
  • Fix possible crash when fmt: directives aren't on the top level (#​4856)
Preview style
  • Fix fmt: skip skipping the line after instead of the line it's on (#​4855)
  • Remove unnecessary parentheses from the left-hand side of assignments while preserving
    magic trailing commas and intentional multiline formatting (#​4865)
  • Fix fix_fmt_skip_in_one_liners crashing on with statements (#​4853)
  • Fix fix_fmt_skip_in_one_liners crashing on annotated parameters (#​4854)
  • Fix new lines being added after imports with # fmt: skip on them (#​4894)
Packaging
  • Releases now include arm64 Windows binaries and wheels (#​4814)
Integrations
  • Add output-file input to GitHub Action psf/black to write formatter output to a
    file for artifact capture and log cleanliness (#​4824)

v25.11.0

Compare Source

Highlights
  • Enable base 3.14 support (#​4804)
  • Add support for the new Python 3.14 t-string syntax introduced by PEP 750 (#​4805)
Stable style
  • Fix bug where comments between # fmt: off and # fmt: on were reformatted (#​4811)
  • Comments containing fmt directives now preserve their exact formatting instead of
    being normalized (#​4811)
Preview style
  • Move multiline_string_handling from --unstable to --preview (#​4760)
  • Fix bug where module docstrings would be treated as normal strings if preceded by
    comments (#​4764)
  • Fix bug where python 3.12 generics syntax split line happens weirdly (#​4777)
  • Standardize type comments to form # type: <value> (#​4645)
  • Fix fix_fmt_skip_in_one_liners preview feature to respect # fmt: skip for compound
    statements with semicolon-separated bodies (#​4800)
Configuration
  • Add no_cache option to control caching behavior. (#​4803)
Packaging
  • Releases now include arm64 Linux binaries (#​4773)
Output
  • Write unchanged content to stdout when excluding formatting from stdin using pipes
    (#​4610)
Blackd
  • Implemented BlackDClient. This simple python client allows to easily send formatting
    requests to blackd (#​4774)
Integrations
  • Enable 3.14 base CI (#​4804)
  • Enhance GitHub Action psf/black to support the required-version major-version-only
    "stability" format when using pyproject.toml (#​4770)
  • Improve error message for vim plugin users. It now handles independently vim version
  • Vim: Warn on unsupported Vim and Python versions independently (#​4772)
  • Vim: Print the import paths when importing black fails (#​4675)
  • Vim: Fix handling of virtualenvs that have a different Python version (#​4675)

v25.9.0

Compare Source

Highlights
  • Remove support for pre-python 3.7 await/async as soft keywords/variable names
    (#​4676)
Stable style
  • Fix crash while formatting a long del statement containing tuples (#​4628)
  • Fix crash while formatting expressions using the walrus operator in complex with
    statements (#​4630)
  • Handle # fmt: skip followed by a comment at the end of file (#​4635)
  • Fix crash when a tuple appears in the as clause of a with statement (#​4634)
  • Fix crash when tuple is used as a context manager inside a with statement (#​4646)
  • Fix crash when formatting a \ followed by a \r followed by a comment (#​4663)
  • Fix crash on a \\r\n (#​4673)
  • Fix crash on await ... (where ... is a literal Ellipsis) (#​4676)
  • Fix crash on parenthesized expression inside a type parameter bound (#​4684)
  • Fix crash when using line ranges excluding indented single line decorated items
    (#​4670)
Preview style
  • Fix a bug where one-liner functions/conditionals marked with # fmt: skip would still
    be formatted (#​4552)
  • Improve multiline_string_handling with ternaries and dictionaries (#​4657)
  • Fix a bug where string_processing would not split f-strings directly after
    expressions (#​4680)
  • Wrap the in clause of comprehensions across lines if necessary (#​4699)
  • Remove parentheses around multiple exception types in except and except* without
    as. (#​4720)
  • Add \r style newlines to the potential newlines to normalize file newlines both from
    and to (#​4710)
Parser
  • Rewrite tokenizer to improve performance and compliance (#​4536)
  • Fix bug where certain unusual expressions (e.g., lambdas) were not accepted in type
    parameter bounds and defaults. (#​4602)
Performance
  • Avoid using an extra process when running with only one worker (#​4734)
Integrations
  • Fix the version check in the vim file to reject Python 3.8 (#​4567)
  • Enhance GitHub Action psf/black to read Black version from an additional section in
    pyproject.toml: [project.dependency-groups] (#​4606)
  • Build gallery docker image with python3-slim and reduce image size (#​4686)
Documentation
  • Add FAQ entry for windows emoji not displaying (#​4714)

v25.1.0

Compare Source

Highlights

This release introduces the new 2025 stable style (#​4558), stabilizing the following
changes:

  • Normalize casing of Unicode escape characters in strings to lowercase (#​2916)
  • Fix inconsistencies in whether certain strings are detected as docstrings (#​4095)
  • Consistently add trailing commas to typed function parameters (#​4164)
  • Remove redundant parentheses in if guards for case blocks (#​4214)
  • Add parentheses to if clauses in case blocks when the line is too long (#​4269)
  • Whitespace before # fmt: skip comments is no longer normalized (#​4146)
  • Fix line length computation for certain expressions that involve the power operator
    (#​4154)
  • Check if there is a newline before the terminating quotes of a docstring (#​4185)
  • Fix type annotation spacing between * and more complex type variable tuple (#​4440)

The following changes were not in any previous release:

  • Remove parentheses around sole list items (#​4312)
  • Generic function definitions are now formatted more elegantly: parameters are split
    over multiple lines first instead of type parameter definitions (#​4553)
Stable style
  • Fix formatting cells in IPython notebooks with magic methods and starting or trailing
    empty lines (#​4484)
  • Fix crash when formatting with statements containing tuple generators/unpacking
    (#​4538)
Preview style
  • Fix/remove string merging changing f-string quotes on f-strings with internal quotes
    (#​4498)
  • Collapse multiple empty lines after an import into one (#​4489)
  • Prevent string_processing and wrap_long_dict_values_in_parens from removing
    parentheses around long dictionary values (#​4377)
  • Move wrap_long_dict_values_in_parens from the unstable to preview style (#​4561)
Packaging
  • Store license identifier inside the License-Expression metadata field, see
    PEP 639. (#​4479)
Performance
  • Speed up the is_fstring_start function in Black's tokenizer (#​4541)
Integrations
  • If using stdin with --stdin-filename set to a force excluded path, stdin won't be
    formatted. (#​4539)

v24.10.0

Compare Source

Highlights
  • Black is now officially tested with Python 3.13 and provides Python 3.13
    mypyc-compiled wheels. (#​4436) (#​4449)
  • Black will issue an error when used with Python 3.12.5, due to an upstream memory
    safety issue in Python 3.12.5 that can cause Black's AST safety checks to fail. Please
    use Python 3.12.6 or Python 3.12.4 instead. (#​4447)
  • Black no longer supports running with Python 3.8 (#​4452)
Stable style
  • Fix crashes involving comments in parenthesised return types or X | Y style unions.
    (#​4453)
  • Fix skipping Jupyter cells with unknown %% magic (#​4462)
Preview style
  • Fix type annotation spacing between * and more complex type variable tuple (i.e. def fn(*args: *tuple[*Ts, T]) -> None: pass) (#​4440)
Caching
  • Fix bug where the cache was shared between runs with and without --unstable (#​4466)
Packaging
  • Upgrade version of mypyc used to 1.12 beta (#​4450) (#​4449)
  • blackd now requires a newer version of aiohttp. (#​4451)
Output
  • Added Python target version information on parse error (#​4378)
  • Add information about Black version to internal error messages (#​4457)
pallets/click (click)

v8.3.1

Compare Source

Released 2025-11-15

  • Don't discard pager arguments by correctly using subprocess.Popen. :issue:3039
    :pr:3055
  • Replace Sentinel.UNSET default values by None as they're passed through
    the Context.invoke() method. :issue:3066 :issue:3065 :pr:3068
  • Fix conversion of Sentinel.UNSET happening too early, which caused incorrect
    behavior for multiple parameters using the same name. :issue:3071 :pr:3079
  • Hide Sentinel.UNSET values as None when looking up for other parameters
    through the context inside parameter callbacks. :issue:3136 :pr:3137
  • Fix rendering when prompt and confirm parameter prompt_suffix is
    empty. :issue:3019 :pr:3021
  • When Sentinel.UNSET is found during parsing, it will skip calls to
    type_cast_value. :issue:3069 :pr:3090

v8.3.0

Compare Source

Released 2025-09-17

  • Improved flag option handling: Reworked the relationship between flag_value
    and default parameters for better consistency:

    • The default parameter value is now preserved as-is and passed directly
      to CLI functions (no more unexpected transformations)
    • Exception: flag options with default=True maintain backward compatibility
      by defaulting to their flag_value
    • The default parameter can now be any type (bool, None, etc.)
    • Fixes inconsistencies reported in: :issue:1992 :issue:2514 :issue:2610
      :issue:3024 :pr:3030
  • Allow default to be set on Argument for nargs = -1. :issue:2164
    :pr:3030

  • Show correct auto complete value for nargs option in combination with flag
    option :issue:2813

  • Fix handling of quoted and escaped parameters in Fish autocompletion. :issue:2995 :pr:3013

  • Lazily import shutil. :pr:3023

  • Properly forward exception information to resources registered with
    click.core.Context.with_resource(). :issue:2447 :pr:3058

  • Fix regression related to EOF handling in CliRunner. :issue:2939 :pr:2940

v8.2.2

Compare Source

Released 2025-07-31

  • Fix reconciliation of default, flag_value and type parameters for
    flag options, as well as parsing and normalization of environment variables.
    :issue:2952 :pr:2956
  • Fix typing issue in BadParameter and MissingParameter exceptions for the
    parameter param_hint that did not allow for a sequence of string where the
    underlying function _join_param_hints allows for it. :issue:2777 :pr:2990
  • Use the value of Enum choices to render their default value in help
    screen. Refs :issue:2911 :pr:3004
  • Fix completion for the Z shell (zsh) for completion items containing
    colons. :issue:2703 :pr:2846
  • Don't include envvar in error hint when not configured. :issue:2971 :pr:2972
  • Fix a rare race in click.testing.StreamMixer's finalization that manifested
    as a ValueError on close in a multi-threaded test session.
    :issue:2993 :pr:2991

v8.2.1

Compare Source

Released 2025-05-20

  • Fix flag value handling for flag options with a provided type. :issue:2894
    :issue:2897 :pr:2930
  • Fix shell completion for nested groups. :issue:2906 :pr:2907
  • Flush sys.stderr at the end of CliRunner.invoke. :issue:2682
  • Fix EOF handling for stdin input in CliRunner. :issue:2787
ClickHouse/clickhouse-connect (clickhouse-connect)

v0.13.0

Compare Source

Improvements
  • BREAKING CHANGE: Implement native write path for Variant data type with type-aware dispatching.
    Previously, all values inserted into a Variant column were stringified and sent to the server, which
    would store them in the String member if present, or attempt server-side conversion otherwise. Values
    are now serialized using their native ClickHouse types client-side (e.g. inserting 100 into
    Variant(Int64, String) stores Int64(100) instead of String("100")). Key changes:
    • Values that don't match any variant member now raise DataError instead of being stringified and
      delegated to the server.
    • A typed_variant(value, 'TypeName') helper is provided for cases where automatic dispatch
      cannot resolve the target type, such as when multiple variant members map to the same Python
      type (e.g. Array(UInt32) vs Array(String)).
  • Added utc_tz_aware="schema" mode which returns timezone-aware datetimes only when the server's column schema explicitly defines a timezone (e.g. DateTime('UTC')), and naive datetimes for bare DateTime columns. This matches the ClickHouse schema definition exactly. Not yet supported for Arrow-based query methods. Closes #​645
  • Add type annotations to public API methods in Client, AsyncClient, HttpClient, and QueryResult. Ref #​567
Bug Fixes
  • Fix dict_add parameter typed as builtin any instead of typing.Any.
  • Recognize UPDATE as a command so lightweight updates work correctly via client.query() and SQLAlchemy.
  • SQLAlchemy: GROUP BY now renders label aliases instead of full expressions which avoids circular reference errors when an alias shadows a source column name in ClickHouse.

v0.11.0

Compare Source

Python 3.9 Deprecation

Python 3.9 EOL'd Oct 2025. Support for Python 3.9 is now softly deprecated and has been removed from our CI test matrix but
distribution wheels will continue to be built until the 1.0 release or until the builds naturally fail, whichever comes first.
A DeprecationWarning will now be displayed when initializing the client on Python 3.9. Users should plan to upgrade to
Python 3.10+ as 3.9 compatibility may break unexpectedly in future updates.

Bug Fixes
  • Raise OperationalError when ResponseSource hits network failure before any data is received. Previously, empty result would be returned. Closes #​620
  • Fix issue with DROP table in client temp table test.
  • Fixed a bug where InsertContext state was not reset on insert failure, leading to reuse errors when data was passed separately.
  • Fixed UTC-equivalent timezone recognition issue where servers returning Etc/UCT, GMT, or other UTC-equivalent timezone names caused inconsistent behavior with utc_tz_aware=False. DateTime columns with explicit UTC timezones now correctly return naive datetimes when utc_tz_aware=False regardless of the specific UTC-equivalent timezone name returned by the server. Closes #​629
Improvements
  • Add support for mid-stream exceptions. Closes #​626
  • Add support for QBit data type. Closes #​570
  • Add the ability to create table from PyArrow objects. Addresses #​588
  • Always generate query_id from the client side as a UUID4 if it is not explicitly set. Closes #​596
  • Extend support for creating tables from PyArrow objects to include datetime/timestamp types. Closes #​605
  • Add pre-commit hooks for auto-linting contributions at commit time. Addresses #​607
  • Add missing type annotation. Closes #​567
  • Auto-enable cancel_http_readonly_queries_on_client_close setting for HTTP clients to ensure SELECT queries are cancelled on the server when the client disconnects. Closes #​641

v0.10.0

Compare Source

Bug Fixes
  • Fixed DST fallback bug in DateTime and DateTime64 types caused by passing potentially ambiguous times to pd.DateTimeIndex constructor. Closes #​585
  • Fixed issue with JSON key dot escaping. Closes #​571
Improvements
  • Added SQLAlchemy core API support for ARRAY JOIN and FINAL modifier. Closes #​579
  • Added Python 3.14 support (non-free-threaded build only; free-threaded builds are not yet supported). Closes #​574
  • Added utc_tz_aware parameter to client and query methods to opt in to returning timezone-aware UTC objects for DateTime/DateTime64 columns. Default behavior remains the same and returns tz naive objects for backward compatibility. Note: this parameter will likely be removed and only return tz-aware dts in some future release. Closes #​566
  • Added executor parameter to AsyncClient constructor to allow passing a custom executor for async operations. This allows users to control the concurrency and thread pool used by the async client.

v0.9.2

Compare Source

  • Updated python_requires to drop Python 3.8 and advertise support for 3.9–3.13
  • Allow passing role as a field in the settings keyword argument to set a role for a specific query

v0.9.1

Compare Source

  • Fix problem with typing that forced numpy to be installed.

v0.9.0

Compare Source

Breaking Changes
  • WARNING: BREAKING CHANGE — Removed support for sqlalchemy 1.3 which reached its EOL in 2021. The minimum required version is now 1.4.40.
  • WARNING: BREAKING CHANGE — Behavior for reading from IPv6 columns has changed:
    • With read_format='native', the client will always return ipaddress.IPv6Address objects, even for IPv4-mapped addresses (e.g., "::ffff:192.168.1.1"). Previously, the client returned ipaddress.IPv4Address objects for these cases. This change enforces type consistency and avoids surprising implicit conversions. If your application requires IPv4 objects, you can explicitly convert using the ipv4_mapped attribute of IPv6Address.
    • With read_format='string', the client will always return IPv6 string representations, e.g., "::ffff:192.168.1.1" instead of "192.168.1.1", for the same reasons as above. If you require only the IPv4 string, you can parse or truncate this in your application code.
    • Closes #​493
Major Features
  • Added support for SQLAlchemy 2.x. The minimum required version is 1.4.40. Closes #​263
  • Added Polars support for Arrow-based query and insert methods (query_df_arrow, query_df_arrow_stream, insert_df_arrow). This initial implementation provides basic dataframe conversion through the Arrow format, similar to how we support the pyarrow-backed pandas dataframes. Closes #​111 and #​542
  • Added support for querying/inserting pyarrow-backed DataFrames:
    • query_df_arrow(): returns a pandas DataFrame with PyArrow dtype backend. Note that Arrow data types are preserved without additional conversions.
    • query_df_arrow_stream(): Streaming version of query_df_arrow() for processing large result sets.
    • insert_df_arrow(): Optimized insertion method for pandas DataFrames with PyArrow backend, which should provide better performance than standard insert_df().
  • Added Time and Time64 type support. Closes #​509
  • Support for both pandas 1.x and 2.x.
  • Added support for Nullable(JSON) types
  • Added support for BFloat16 types
Improvements
  • Add support for lightweight DELETE in sqlalchemy. Closes #​382
  • Added support for SELECT/JOIN operations via SQLAlchemy's core API (table operations and explicit statements--not ORM sessions-based queries)
  • Added client connection option rename_response_column (default None) that allows the user to define how response columns are automatically renamed according to a predefined scheme. Helpful for stripping alias prefixes, etc. in potentially complex quer

@renovate renovate bot force-pushed the renovate/python-dependencies branch from b82a8f3 to 47a96fa Compare September 23, 2024 18:38
@renovate renovate bot force-pushed the renovate/python-dependencies branch 2 times, most recently from f338270 to 68a9f86 Compare May 28, 2025 20:24
@wilbrdt wilbrdt force-pushed the renovate/python-dependencies branch from 68a9f86 to 2e458eb Compare May 29, 2025 08:01
@renovate renovate bot force-pushed the renovate/python-dependencies branch from 2e458eb to a06be19 Compare May 29, 2025 08:02
@renovate
Copy link
Contributor Author

renovate bot commented May 29, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@wilbrdt wilbrdt force-pushed the renovate/python-dependencies branch from a7e7eda to a06be19 Compare May 29, 2025 08:44
@renovate renovate bot force-pushed the renovate/python-dependencies branch 5 times, most recently from 9fbeed4 to 9904c4d Compare June 2, 2025 20:42
@renovate renovate bot force-pushed the renovate/python-dependencies branch 7 times, most recently from 40e3493 to 622e055 Compare June 12, 2025 10:56
@renovate renovate bot force-pushed the renovate/python-dependencies branch 7 times, most recently from f7f5593 to ed7707b Compare June 21, 2025 18:33
@renovate renovate bot force-pushed the renovate/python-dependencies branch 3 times, most recently from 8490285 to 3519d46 Compare June 26, 2025 17:04
@renovate renovate bot force-pushed the renovate/python-dependencies branch 6 times, most recently from 14b6bc4 to ce25951 Compare July 21, 2025 19:05
@renovate renovate bot force-pushed the renovate/python-dependencies branch 5 times, most recently from e016033 to 0b19607 Compare July 28, 2025 17:37
@renovate renovate bot force-pushed the renovate/python-dependencies branch 5 times, most recently from f4a006e to b35662c Compare August 12, 2025 00:30
@renovate renovate bot force-pushed the renovate/python-dependencies branch 3 times, most recently from 774c62c to 1972fc8 Compare August 15, 2025 18:44
@renovate renovate bot force-pushed the renovate/python-dependencies branch 7 times, most recently from 8ddb755 to 1614702 Compare August 27, 2025 06:31
@renovate renovate bot force-pushed the renovate/python-dependencies branch 3 times, most recently from 2ee4b7d to b6b8a87 Compare September 5, 2025 00:03
| datasource | package               | from            | to              |
| ---------- | --------------------- | --------------- | --------------- |
| pypi       | anyio                 | 4.9.0           | 4.12.1          |
| pypi       | bcrypt                | 4.2.0           | 5.0.0           |
| pypi       | black                 | 24.8.0          | 26.3.0          |
| pypi       | cachetools            | 5.5.0           | 7.0.3           |
| pypi       | click                 | 8.2.0           | 8.3.1           |
| pypi       | clickhouse-connect    | 0.7.19          | 0.13.0          |
| pypi       | cryptography          | 43.0.1          | 46.0.5          |
| pypi       | elasticsearch         | 8.19.3          | 9.3.0           |
| pypi       | factory-boy           | 3.3.1           | 3.3.3           |
| pypi       | fastapi               | 0.114.2         | 0.135.1         |
| pypi       | importlib-metadata    | 8.5.0           | 8.7.1           |
| pypi       | mkdocs-click          | 0.8.1           | 0.9.0           |
| pypi       | mkdocs-material       | 9.5.34          | 9.7.4           |
| pypi       | mkdocstrings          | 0.26.1          | 1.0.3           |
| pypi       | moto                  | 5.0.14          | 5.1.21          |
| pypi       | mypy                  | 1.11.2          | 1.19.1          |
| pypi       | neoteroi-mkdocs       | 1.1.0           | 1.2.0           |
| pypi       | polyfactory           | 2.16.2          | 3.3.0           |
| pypi       | pyfakefs              | 5.6.0           | 6.1.4           |
| pypi       | pymdown-extensions    | 10.9            | 10.21           |
| pypi       | pytest                | 8.3.5           | 9.0.2           |
| pypi       | pytest-cov            | 5.0.0           | 7.0.0           |
| pypi       | pytest-httpx          | 0.35.0          | 0.36.0          |
| pypi       | python-jose           | 3.3.0           | 3.5.0           |
| pypi       | responses             | 0.25.3          | 0.26.0          |
| pypi       | ruff                  | 0.6.5           | 0.15.5          |
| pypi       | sentry-sdk            | 2.14.0          | 2.54.0          |
| pypi       | twine                 | 5.1.1           | 6.2.0           |
| pypi       | types-cachetools      | 5.5.0.20240820  | 6.2.0.20251022  |
| pypi       | types-python-dateutil | 2.9.0.20240906  | 2.9.0.20260305  |
| pypi       | types-python-jose     | 3.3.4.20240106  | 3.5.0.20250531  |
| pypi       | types-requests        | 2.32.0.20240914 | 2.32.4.20260107 |
| pypi       | uvicorn               | 0.30.6          | 0.41.0          |
| pypi       | websockets            | 13.1            | 16.0            |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants